package cn.itcast.nems.journal.service;

import cn.itcast.nems.base.dao.entity.E2Clazz;
import cn.itcast.nems.studentrecord.dao.entity.JournalTransferType;
import cn.itcast.nems.studentrecord.dao.entity.StudentRecord;
import cn.itcast.nems.studentrecord.service.settlement.DefaultSettlementCalculator;
import cn.itcast.nems.studentrecord.service.settlement.SettlementData;
import cn.itcast.nems.studentrecord.service.settlement.SettlementResult;

import java.time.LocalDateTime;

public interface JournalTransferCommonService {

    DefaultSettlementCalculator getCalculatorInstance(JournalTransferType journalTransferType);

    SettlementResult calculate(JournalTransferType journalTransferType, SettlementData data);

    SettlementResult calculate(JournalTransferType journalTransferType, StudentRecord studentRecord, LocalDateTime outDate);

    SettlementResult calculate(JournalTransferType journalTransferType, StudentRecord studentRecord, LocalDateTime outDate, E2Clazz sourceClazz);

}
